package Map_and_Set.Leetcode;

import java.util.HashMap;
import java.util.Map;

/**
 *单词规律
 */
public class Num290 {
    public boolean wordPattern(String pattern, String s) {
        String[] str=s.split(" ");
        //如果pattern和str的长度都不相等，直接false
        if (str.length!=pattern.length()){
            return false;
        }
        //使用Map集合建立str和数字的映射关系
        Map<String,Integer> map1=new HashMap<>();
        int count=1;
        StringBuilder sb1=new StringBuilder();
        for (String s1:str) {
            if (map1.containsKey(s1)){
                //此时这个字符不是第一次出现
                sb1.append(map1.get(s1));
            }else {
                //此时这个字符是第一次出现
                map1.put(s1,count);
                sb1.append(count++);
            }
        }
        //使用Map集合建立pattern和数字的映射关系
        char[] arr=pattern.toCharArray();
        count=1;
        Map<Character, Integer> map2=new HashMap<>();
        StringBuilder sb2=new StringBuilder();
        for (char s2:arr){
            if (map2.containsKey(s2)){
                //此时这个字符不是第一次出现
                sb2.append(map2.get(s2));
            }else{
                //此时这个字符是第一次出现
                map2.put(s2,count);
                sb2.append(count++);
            }
        }
        return sb1.toString().equals(sb2.toString());
    }
}
